package Day002_final_static_接口.demo02static修饰变量_方法;

public class Test {
    public static void main(String[] args) {



    /*
        1.static修饰成员变量:
                        格式:  static 数据类型 变量名;
                        特点:
                    被static修饰的成员变量,就叫做静态成员变量(类变量),该静态成员变量会被
                    该类的所有对象共享,也就是说在内存中只有一份,是直接属于类的
                静态成员变量的访问格式:
                    类名.静态成员变量名   推荐
                    对象名.静态成员变量名
        2.static修饰成员方法:
                        格式:  public static 返回值类型 方法名;
                        特点:
                    被static修饰的方法,就叫做静态方法(类方法),可以通过类名直接访问
                访问格式:
                    类名.静态方法名();  推荐
                    对象名.静态方法名();
                注意事项:
                    1.静态方法中不能出现this关键字
                    2.静态方法中不能直接访问非静态成员变量和非静态成员方法
                    3.静态方法可以直接访问静态成员变量和静态成员方法
                    4.非静态方法可以直接访问一切成员变量和成员方法(静态\非静态)

     */

        //创建对象
        People p1 = new People();
        p1.name = "张三";
        p1.country = "中国";
        System.out.println("姓名:" + p1.name + "国籍:" + p1.country);

        //创建对象
        People p2 = new People();
        //country被static修饰前,姓名:null 国籍:null
        //country被static修饰后,姓名:null 国籍:中国
        //修饰后是静态成员变量,p1.country p2.country指向同一静态区对象
        System.out.println("姓名:" + p2.name + "国籍:" + p2.country);

        //p2.country = "英国";
        People.country = "英国"; //属于类,可以直接  类名.静态成员变量名
        //直接使用,不会再次开辟空间.
        System.out.println(p1.country + "," + p2.country); //英国,英国
        //修饰后是静态成员变量,p1.country p2.country指向同一静态区对象


        //静态方法可以直接类名访问
        People.method1();
        People.method2();
        // People.method3();
        // People.method4();

        //main是静态方法
        //method(); main是静态方法不能直接调用非静态方法method
    }

    public void method(){

    }
}
